外观
2023年9月 GESP C++ 一级真题解析
一、单选题(每题2分,共30分)
单选题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | C | D | B | C | D | B | A | C | A | C | B | B | D | D | A |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 我们通常说的"内存"属于计算机中的()。
A. 输出设备
B. 输入设备
C. 存储设备
D. 打印设备
查看解析
答案:C
考纲知识点: 计算机基础知识
解析: 本题属于考察计算机基础知识中的存储设备问题;内存是一种存储设备,也可以考虑关联内存中的"存"字,选C。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 以下C++不可以作为变量的名称的是()。
A. redStar
B. RedStar
C. red_star
D. red space
查看解析
答案:D
考纲知识点: 变量的定义与使用
解析: 本题属于变量命名规则问题。C++中的变量包括数字、字母和下划线。D选项中含有空格,因此选D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. C++表达式2-1&&2%10的值是()。
A. 0
B. 1
C. 2
D. 3
查看解析
答案:B
考纲知识点: 基本运算
解析: 本题考察运算符优先级,算数运算符包括:+,-,*,/,%,优先级大于&&。2-1等于1,2%10等于2,1&&2等于1,选B。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 下面C++代码段执行后的输出是()。
cpp
int a = 3, b = 4;
cout << "a+b=" << a+b;1
2
2
A. 3+4=7
B. 3+4=7
C. a+b=7
D. a+b=a+b
查看解析
答案:C
考纲知识点: 变量的定义与使用、输入输出语句、基本运算
解析: 本题考察程序模拟,双引号和没有双引号。直接输出双引号里的内容,计算a+b的结果,然后输出。选C。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 在C++语言中,int类型的变量x、y、z的值分别为2、4、6,以下表达式的值为真的是()。
A. x > y || x > z
B. x != z-y
C. z > y + x
D. x < y || !x < z
查看解析
答案:D
考纲知识点: 基本运算
解析: 本题考察算数运算符、比较运算符和逻辑运算符。比较运算符高于逻辑运算符,例如A选项,先计算x > y和x > z,x > y结果0,x > z结果是0,0||0的结果是0,因此A的表达式值为0。同理计算BCD选项,选D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 对int类型的变量a、b、c,下列语句不符合C++语法是()。
A. c += 5;
B. b = c % 2.5;
C. a = (b = 3, c = 4, b + c);
D. a -= a = (b = 6) / (c = 2);
查看解析
答案:B
考纲知识点: 基本运算
解析: 本题考察C++的语法知识点。%运算符,操作数只能是整数,2.5不符合语法规则,因此选B。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 下面C++代码执行后的输出是()。
cpp
int m = 14;
int n = 12;
if (m % 2 == 0 && n % 2 == 0)
cout << "都是偶数";
else if (m % 2 == 1 && n % 2 == 1)
cout << "都是奇数";
else
cout << "不都是偶数或奇数";1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
A. 都是偶数
B. 都是奇数
C. 不都是偶数或奇数
D. 以上说法都不正确
查看解析
答案:A
考纲知识点: 选择结构、基本运算
解析: 本题考察程序模拟结果,考察if分支结构。14和12都是偶数,对2取余结果都等于0,因此A选项正确。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 下面C++代码执行后的输出是()。
cpp
int m = 14;
int n = 12;
if (m % 2 && n % 2)
cout << "都是偶数";
else if (m % 2 == 1 && n % 2 == 1)
cout << "都是奇数";
else
cout << "不都是偶数或奇数";1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
A. 都是偶数
B. 都是奇数
C. 不都是偶数或奇数
D. 以上说法都不正确
查看解析
答案:C
考纲知识点: 选择结构、基本运算
解析: 本题考察程序模拟结果,注意是考察的输出结果,输出结果不一定与事实相符。首先14和12都是偶数,14%2的结果等于0,12%2也是一样,会进入第2个if判断,最终输出C选项。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 下面C++代码执行后的输出是()。
cpp
int m = 7;
if (m / 5 || m / 3)
cout << 0;
else if (m / 3)
cout << 1;
else if (m / 5)
cout << 2;
else
cout << 3;1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
A. 0
B. 1
C. 2
D. 3
查看解析
答案:A
考纲知识点: 选择结构、基本运算
解析: 本题考察程序模拟结果,考察if语句和除法运算。整数除以整数的答案还是整数,7/5=1,7/3=2,第1个if条件成立,输出0,选A。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 下面C++代码段执行后的输出是()。
cpp
int cnt = 0;
for (int i = 1; i <= 5; i++)
cnt = cnt + 1;
cout << cnt;1
2
3
4
2
3
4
A. 1
B. 4
C. 5
D. 10
查看解析
答案:C
考纲知识点: 循环结构
解析: 本题考察for循环结构,循环执行了5次,cnt增加了5,答案选C。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限11. 下面C++代码执行后的输出是()。
cpp
int tnt = 0;
for (int i = 1; i < 5; i += 2)
tnt = tnt + i;
cout << tnt;1
2
3
4
2
3
4
A. 2
B. 4
C. 9
D. 10
查看解析
答案:B
考纲知识点: 循环结构
解析: 本题考察for循环结构,循环执行了i=1和i=3共2次,注意i+=2;cnt增加了1+3=4,答案选B。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限12. 下面C++代码执行后的输出是()。
cpp
int n = 5;
int cnt = 1;
while (n > 0) {
cnt += 1;
n -= 2;
}
cout << cnt;1
2
3
4
5
6
7
2
3
4
5
6
7
A. 3
B. 4
C. 6
D. 7
查看解析
答案:B
考纲知识点: 循环结构、基本运算
解析: 本题考察while循环结构,循环执行了n=5,n=3,n=1共3次,cnt增加了3,最开始cnt=1,答案选B。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限13. 下面C++代码用于求正整数的所有因数,即输出所有能整除一个正整数的数。如,输入10,则输出为1、2、5、10;输入12,则输出为1、2、3、4、6、12;输入17,则输出为1、17。在横线处应填入代码是()。
cpp
int n = 0;
cout << "请输入一个正整数:";
cin >> n;
for ( ) // 此处填写代码
if (n % i == 0)
cout << i << endl;1
2
3
4
5
6
7
2
3
4
5
6
7
A. int i = 1; i < n; i++
B. int i = 1; i < n + 1; i++
C. int i = 1; i < n; i + 1
D. int i = 1; i <= n; i++
查看解析
答案:D
考纲知识点: 循环结构、选择结构
解析: 本题考察for循环结构,求一个正整数的所有因子,1和n是数字n的因子,循环的终止条件i<=n或者i<n+1,B和D选项符合。B选项中i+1,i的值不能累加,会造成死循环,D选项正确。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限14. 在下列代码的横线处填写(),可以使得输出是正整数1234各位数字的平方和。
cpp
int n = 1234, s = 0;
for (; n; n /= 10)
s += ; // 此处填写代码
cout << s << endl;1
2
3
4
2
3
4
A. n / 10
B. (n / 10) * (n / 10)
C. n % 10
D. (n % 10) * (n % 10)
查看解析
答案:D
考纲知识点: 循环结构、基本运算
解析: 本题考察for循环结构,求各位数字的平方和,BD是求的平方和,D选项可以分别求出各位上的数字,选D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限15. 执行以下C++语言程序后,输出结果是()。
cpp
int s = 1, n = 0;
for (int i = 1; i <= n; i++)
s *= i;
cout << s << endl;1
2
3
4
2
3
4
A. 1
B. 0
C. 120
D. 无法确定
查看解析
答案:A
考纲知识点: 循环结构、基本运算
解析: 本题考察for循环结构,循环退出条件n赋值为0,循环不会执行,输出s原有值1。选A。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限二、判断题(每题2分,共20分)
判断题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | √ | √ | √ | × | √ | × | × | × | × | √ |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 早期计算机内存不够大,可以将字库固化在一个包含只读存储器的扩展卡中插入计算机主板帮助处理汉字。
查看解析
答案:√
考纲知识点: 计算机基础知识、计算机历史
解析: 本题计算机基础知识,计算机存储。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 神威·太湖之光超级计算机是中国自主研制的超级计算机,在全球超级计算机TOP500排行榜中多次荣膺榜首。
查看解析
答案:√
考纲知识点: 计算机历史
解析: 本题计算机发展,超级计算机。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. C++表达式int(3.14)的值为3。
查看解析
答案:√
考纲知识点: 数据类型
解析: 本题C++语言强制类型转换,将浮点型转换为整形,用int()格式。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. C++语句cout<<(2,3,"23")的输出为 2,3,23
查看解析
答案:×
考纲知识点: 输入输出语句
解析: 本题考察C++语言逗号表达式,输出括号内最后一项内容。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. C++的循环语句 for (int i = 0; i < 10; i += 2) 表示i从0开始到10结束但不包含10,间隔为2。
查看解析
答案:√
考纲知识点: 循环结构
解析: 本题考察for循环知识,看for里面的条件,i初始值是0,每次增加2,i分别是0,2,4,6,8,10,到10退出循环。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. C++表达式 ('1' + '1') 的值为 2。
查看解析
答案:×
考纲知识点: 基本数据类型、基本运算
解析: 本题考察C++字符知识,字符相加是根据对应ASCI码值相加,'1'的ASCI值是49,'1'的ASCI值是49,输出是98对应的字符,不是50。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 在C++语言中,do-while循环不可能导致死循环,但while有可能。
查看解析
答案:×
考纲知识点: 循环结构
解析: 本题考察C++循环知识,只要条件成立,都会导致死循环。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 在下面的C++代码中,由于循环中的continue是无条件被执行,因此将导致死循环。
cpp
for(int i = 1; i < 10; i++) continue;1
查看解析
答案:×
考纲知识点: 循环结构
解析: 本题考察C++循环知识,循环变量会增加,等于10的时候退出循环。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 在C++代码中,不可以将变量命名为cout,因为cout是C++的关键字。
查看解析
答案:×
考纲知识点: 变量的定义和使用
解析: 本题考察C++知识,cout不是关键字,是一个类的对象。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. C++是一种高级程序设计语言。
查看解析
答案:√
考纲知识点: 计算机基础知识
解析: 本题考察C++语言知识,C++是一门高级程序设计语言。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限三、编程题(每题25分,共50分)
1. 买文具
问题描述
开学了,小明来到文具店选购文具。签字笔2元一支,他需要X支;记事本5元一本,他需要Y本;直尺3元一把,他需要Z把。小明手里有Q元钱。你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
输入格式
输入4行。
第一行包含一个正整数X,是小明购买签字笔的数量。约定 1 ≤ X ≤ 10。
第二行包含一个正整数Y,是小明购买记事本的数量。约定 1 ≤ Y ≤ 10。
第三行包含一个正整数Z,是小明购买直尺的数量。约定 1 ≤ Z ≤ 10。
第四行包含一个正整数Q,是小明手里的钱数(单位:元)。
输出格式
输出2行。如果小明手里的钱够买他需要的文具,则第一行输出"Yes",第二行输出小明会剩下的钱数(单位:元);否则,第一行输出"No",第二行输出小明缺少的钱数(单位:元)。
样例输入1
1
2
3
201
2
3
4
2
3
4
样例输出1
Yes
101
2
2
样例输入2
1
1
2
51
2
3
4
2
3
4
样例输出2
No
51
2
2
样例解释
样例1:需要花费 1×2 + 2×5 + 3×3 = 21元,但只有20元,所以不够,缺少1元。 样例2:需要花费 1×2 + 1×5 + 2×3 = 13元,有20元,所以够了,剩余7元。
解题思路
查看解题思路
题目大意: 已知买一个签字笔、记事本、直尺的价格,输入要买的数量和总钱数,问是否能够买到需要的数量。
考纲知识点: 变量的定义与使用、选择结构、基本运算、输入输出语句。
解题思路:
- 按题目要求定义好需要的变量,并实现输入;
- 根据单价求出购买这些数量的需要总钱数;
- 如果有的钱数大于等于需要的钱数,输出"Yes"和剩余的钱数;否则输出"No"和缺少的钱数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int main() {
int x = 0, y = 0, z = 0, q = 0;
cin >> x >> y >> z >> q;
int t = x * 2 + y * 5 + z * 3;
if (q >= t) {
cout << "Yes" << endl;
cout << q - t << endl;
} else {
cout << "No" << endl;
cout << t - q << endl;
}
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 小明的幸运数
问题描述
所有个位数为k的正整数,以及所有k的倍数,都被小明称为"k幸运数"。小明想知道正整数L和R之间(包括L和R)所有k幸运数的和,你能帮帮他吗?
输入格式
输入3行。第一行包含一个正整数k,第二行包含一个正整数L,第三行包含一个正整数R。约定2≤k≤9,1≤L≤R≤1000。
输出格式
输出1行,符合题意的幸运数之和。
样例输入1
7
10
201
2
3
2
3
样例输出1
311
样例解释
10和20之间共有2个7幸运数:14和17。14是7的倍数,17的个位数为7。
因此,结果为31。
解题思路
查看解题思路
题目大意: 求L-R之间所有的数字是否是幸运数字。
考纲知识点: 变量的定义与使用、控制语句结构、逻辑运算、算术运算、输入输出语句等。
解题思路:
- 按题目要求定义好需要的变量,并实现输入;
- 判断每个数字是否是幸运数字,个位是k或者是k的倍数;
- 是的话就累加,最终输出汇总结果。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int main() {
int k = 0, L = 0, R = 0, sum = 0;
cin >> k >> L >> R;
for (int n = L; n <= R; n++) {
if (n % 10 == k || n % k == 0) {
sum += n;
}
}
cout << sum << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限